package com.ruoyi.market.service.impl;

import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.market.domain.Unit;
import com.ruoyi.market.mapper.UnitMapper;
import com.ruoyi.market.service.IUnitService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.validation.Validator;
import java.util.List;

/**
 * 计量单位 业务层处理
 * 
 * @author ruoyi
 */
@Service
public class UnitServiceImpl implements IUnitService
{

    @Autowired
    private UnitMapper unitMapper;

    @Autowired
    protected Validator validator;

    /**
     * 根据条件分页查询计量单位列表
     * 
     * @param unit 计量单位信息
     * @return 计量单位信息集合信息
     */
    @Override
    public List<Unit> selectUnitList(Unit unit)
    {
        return unitMapper.selectUnitList(unit);
    }

    /**
     * 通过计量单位ID查询计量单位
     * 
     * @param unitId 计量单位ID
     * @return 计量单位对象信息
     */
    @Override
    public Unit selectUnitById(Long unitId)
    {
        return unitMapper.selectUnitById(unitId);
    }
    /**
     * 校验名称是否唯一
     *
     * @param unit 等级信息
     * @return 结果
     */
    @Override
    public boolean checkUnitTitleUnique(Unit unit)
    {
        Long unitId = StringUtils.isNull(unit.getUnitId()) ? -1L : unit.getUnitId();
        Unit info = unitMapper.checkUnitTitleUnique(unit.getUnitTitle(), unit.getShopId());
        if (StringUtils.isNotNull(info) && info.getUnitId().longValue() != unitId.longValue())
        {
            return UserConstants.NOT_UNIQUE;
        }
        return UserConstants.UNIQUE;
    }

    /**
     * 新增保存计量单位信息
     * 
     * @param unit 计量单位信息
     * @return 结果
     */
    @Override
    @Transactional
    public int insertUnit(Unit unit)
    {
        // 新增计量单位信息
        int rows = unitMapper.insertUnit(unit);
        return rows;
    }

    /**
     * 修改保存计量单位信息
     * 
     * @param unit 计量单位信息
     * @return 结果
     */
    @Override
    @Transactional
    public int updateUnit(Unit unit)
    {
        return unitMapper.updateUnit(unit);
    }

    /**
     * 批量删除计量单位信息
     * 
     * @param unitIds 需要删除的计量单位ID
     * @return 结果
     */
    @Override
    @Transactional
    public int deleteUnitByIds(Long[] unitIds) { return unitMapper.deleteUnitByIds(unitIds); }
}
